package _0013;

/**
 * 0013.罗马数字转整数
 */
public class Solution {

    public static int romanToInt(String s) {
        int romanNum = 0; // 返回的整数
        for (int i = 0; i < s.length(); i++) { // 遍历取每一个罗马字符
            char ch = s.charAt(i);
            if (i < s.length()) {
                switch (ch) {
                    case 'I':
                        if (i == s.length() - 1) { // 最后一个罗马字符时，直接相加
                            romanNum += 1; // I -> 1
                        } else {
                            if (s.charAt(i + 1) == 'V') {
                                romanNum += 4; // IV -> 4
                                i++;
                            } else if (s.charAt(i + 1) == 'X') {
                                romanNum += 9; // IX -> 9
                                i++;
                            } else {
                                romanNum += 1; // I -> 1
                            }
                        }
                        break;
                    case 'V':
                        romanNum += 5; // V -> 5
                        break;
                    case 'X':
                        if (i == s.length() - 1) { // 最后一个罗马字符时，直接相加
                            romanNum += 10; // X -> 10
                        } else {
                            if (s.charAt(i + 1) == 'L') {
                                romanNum += 40; // XL -> 40
                                i++;
                            } else if (s.charAt(i + 1) == 'C') {
                                romanNum += 90; // XC -> 90
                                i++;
                            } else {
                                romanNum += 10; // X -> 10
                            }
                        }
                        break;
                    case 'L':
                        romanNum += 50; // L -> 50
                        break;
                    case 'C':
                        if (i == s.length() - 1) { // 最后一个罗马字符时，直接相加
                            romanNum += 100; // C -> 100
                        } else {
                            if (s.charAt(i + 1) == 'D') {
                                romanNum += 400; // CD -> 400
                                i++;
                            } else if (s.charAt(i + 1) == 'M') {
                                romanNum += 900; // CM -> 900
                                i++;
                            } else {
                                romanNum += 100; // C -> 100
                            }
                        }
                        break;
                    case 'D':
                        romanNum += 500; // D -> 500
                        break;
                    case 'M':
                        romanNum += 1000; // M -> 1000
                        break;
                }
            }
        }
        return romanNum;
    }

    public static void main(String[] args) {
        String romanStr = "IX";
        int num = romanToInt(romanStr);
        System.out.println("romanStr：" + romanStr);
        System.out.println("romanToInt：" + num);
    }
}
